
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.brain.desa.view.mbean;

import com.brain.capa.dto.CursoDto;
import com.brain.core.common.UtilCore;
import com.brain.core.dto.ParametroDto;
import com.brain.core.view.mbean.*;
import com.brain.core.exception.DAOException;
import com.brain.core.manager.RecursosManager;
import com.brain.core.view.util.ConstantesCore;
import com.brain.desa.dto.EvaluacionDesempenoArbolDto;
import com.brain.desa.dto.EvaluacionDesempenoDto;
import com.brain.desa.dto.EvaluacionDesempenoFuncionMofDto;
import com.brain.desa.dto.EvaluacionDesempenoObjetivoDto;
import com.brain.desa.manager.EvaluacionDesempenoArbolManager;
import com.brain.desa.manager.EvaluacionDesempenoFuncionMofManager;
import com.brain.desa.manager.EvaluacionDesempenoManager;
import com.brain.desa.manager.EvaluacionDesempenoObjetivoManager;
import com.brain.desa.view.util.ConstantesDesa;
import com.brain.sgc.dto.MofFuncionDto;
import com.brain.sgc.dto.PersonaDto;
import com.brain.sgc.dto.PuestoDto;
import com.brain.sgc.manager.PersonaManager;
import com.brain.sgc.view.util.ConstantesSgc;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import javax.persistence.Transient;
import org.apache.log4j.Logger;
import org.primefaces.event.SelectEvent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

/**
 *
 * @author Hvives
 */
@Controller("evaluacionDesempenoMBean")
@Scope("session")
public class EvaluacionDesempenoMBean extends GenericMBean implements Serializable {
    
    private static Logger logger = Logger.getLogger(EvaluacionDesempenoMBean.class);
    @Resource
    private EvaluacionDesempenoManager manager;
    @Resource
    private RecursosManager recursosManager;
    @Resource
    private EvaluacionDesempenoArbolManager evaluacionDesempenoArbolManager; 
    @Resource
    private EvaluacionDesempenoFuncionMofManager evaluacionDesempenoFuncionesMofManager;
    @Resource
    private PersonaManager personaManager;
    @Resource
    private EvaluacionDesempenoObjetivoManager objetivoManager;
    private List<EvaluacionDesempenoDto> lista;
    private EvaluacionDesempenoDto dto;
    private EvaluacionDesempenoDto dtoAux;
    private CursoDto cursoDto;
    private EvaluacionDesempenoFuncionMofDto dtoFuncionesMof;
    private EvaluacionDesempenoArbolDto dtoArbolCompetencia;
    private EvaluacionDesempenoDto dtoFiltro;
    private EvaluacionDesempenoDto dtoEvalDesempenoEstado;
    private EvaluacionDesempenoObjetivoDto objetivoDto;
    private String keyTitulo = "evaluacion.desarrollo.panel";
    @Autowired
    private ApplicationMBean applicationMBean;
    private List<PuestoDto> listaPuestoFiltro;
    private List<PuestoDto> listaPuesto;
    private List<EvaluacionDesempenoFuncionMofDto> listaFuncionesMof;
    private List<CursoDto> listaCursos;
    private List<EvaluacionDesempenoArbolDto> listaArbol;
    private List<EvaluacionDesempenoObjetivoDto> listaObjetivo;
    private List<ParametroDto> listaEstados;
    private List<ParametroDto> listaUnidadOrgFiltro;
    private List<ParametroDto> listaEstadosFiltro;
    
    private PersonaDto personaDto;
    private SelectItem[] siTipoEvaluacionFuncionesMof;
    private SelectItem[] siTipoEvaluacionCompetencias;
    private SelectItem[] siTipoEvaluacionObjetivo;
    @Autowired
    private SessionMBean sessionMBean;
    
    @Transient
    private Long estadoGt;
    @Transient
    private Long estadoAnulado;
    @Transient
    private Long estadoHabilitado;
    @Transient
    private Long estadoActivo;
    @Transient
    private Boolean desabilitarBotonProcesar;
    
    @Transient
    private String descripcionObjetivo;
    @Transient
    private String evidenciaObjetivo;
    
    
    public EvaluacionDesempenoMBean() {
        this.dtoFiltro = new EvaluacionDesempenoDto();
    }
    
    public String iniciar() {
        this.dto = null;
        this.lista = null;
        this.dtoFiltro = new EvaluacionDesempenoDto();
        this.dtoFiltro.setPersonaDto(new PersonaDto());
        this.dtoFiltro.setPuestoDto(new PuestoDto());
        return ConstantesDesa.UrlNavegacion.URL_LISTA_EVALUACION_DESEMPENO;
    }
    
    public String nuevo() {
        sessionMBean.setAccion(ConstantesDesa.Formulario.NUEVO);
        sessionMBean.setTitulo(recursosManager.construirTitulo(keyTitulo, sessionMBean.getAccion()));
        this.lista = new ArrayList<EvaluacionDesempenoDto>();
        this.desabilitarBotonProcesar=false;
        this.dto = new EvaluacionDesempenoDto();
        this.dto.setEstadoDto(new ParametroDto(ConstantesDesa.Parametro.EVALUACION_DESEMPENO_ESTADO_ACTIVO));
        return ConstantesDesa.UrlNavegacion.URL_EVALUACION_DESEMPENO;
    }
    
    public String editar() {
        sessionMBean.setAccion(ConstantesDesa.Formulario.EDITAR);
        sessionMBean.setTitulo(recursosManager.construirTitulo(keyTitulo, sessionMBean.getAccion()));
        //ApplicationHelper.cargarPropietarios(ConstantesDesa.Entidad.REQUERIMIENTO, this.dto.getId());
        this.obtenerDetalles();
        
         for (EvaluacionDesempenoFuncionMofDto x : this.listaFuncionesMof) {
            if (x.getCursoDto() == null) {
                x.setCursoDto(new CursoDto(0L));
            }
        }
        for (EvaluacionDesempenoArbolDto y : this.listaArbol){
            if (y.getCursoDto() == null) {
                y.setCursoDto(new CursoDto(0L));
            }
         }
         this.descripcionObjetivo = null;
        return ConstantesDesa.UrlNavegacion.URL_EVALUACION_DESEMPENO;
    }
    
    protected void obtenerDetalles() {
        this.obtenerCompetencias();
        this.obtenerFuncionesMof();
        this.obtenerObjetivos();
    }
    
    protected void obtenerCompetencias() {
        try {
             this.listaArbol = this.evaluacionDesempenoArbolManager.obtenerEvaluacionDesempeno(this.dto);
            } catch (DAOException ex) {
               logger.error("ERROR DE SISTEMA", ex);
               showError(ex.getMessage());
        }
    }
    
    protected void obtenerFuncionesMof() {
        try {
            this.listaFuncionesMof = this.evaluacionDesempenoFuncionesMofManager.obtenerEvaluacionDesempeno(this.dto);
        } catch (DAOException ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
    }
    protected void obtenerObjetivos() {
        try {
            this.listaObjetivo = this.objetivoManager.obtenerEvaluacionDesempenoObjetivo(this.dto);
        } catch (DAOException ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
    }
    public void agregarfuncionMof() {
        try {
            if(this.listaObjetivo.size()>0){
                if (this.dtoFuncionesMof.getCursoDto().getId() == 0L) {
                    this.dtoFuncionesMof.setCursoDto(null);
                }         
                this.dtoFuncionesMof.setValorActual(this.dtoFuncionesMof.getCalificacion());
                this.evaluacionDesempenoFuncionesMofManager.editar(this.dtoFuncionesMof);
                generarPromedioFuncionMof(this.dtoFuncionesMof.getEvaluacionDesempenoDto().getId());
                this.dto = this.manager.obtenerPorId(this.dto.getId());
                showMessage(UtilCore.Internacionalizacion.getMensajeInternacional("form.general.mensaje.transaccion.ok"));
             }else{showError(UtilCore.Internacionalizacion.getMensajeInternacional("evaluacion.desarrollo.funciones.mof.mensaje.mof.validar.objetivo"));}
            } catch (Exception ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
    }
    public void guardarObjetivo() {
       
        try {      
            this.objetivoDto.setValorActual(this.objetivoDto.getCalificacion());
            this.objetivoManager.editar(this.objetivoDto);
            generarPromedioFuncionMof(this.objetivoDto.getEvaluacionDesempenoDto().getId());
            this.dto = this.manager.obtenerPorId(this.dto.getId());
            showMessage(UtilCore.Internacionalizacion.getMensajeInternacional("form.general.mensaje.transaccion.ok"));
        } catch (Exception ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
    }
    public void eliminarObjetivo() {
         System.out.print(this.listaObjetivo.size());
        try {
            if(this.listaObjetivo.size()>1){
                if (this.objetivoDto.getId() != null) {
                    this.objetivoManager.eliminar(this.objetivoDto);
                }
                generarPromedioFuncionMof(this.objetivoDto.getEvaluacionDesempenoDto().getId());
                this.obtenerObjetivos();
                showMessage(UtilCore.Internacionalizacion.getMensajeInternacional("form.general.mensaje.transaccion.ok"));
              }else{showError(UtilCore.Internacionalizacion.getMensajeInternacional("evaluacion.desarrollo.funciones.mof.mensaje.mof.validar.objetivo.ultimo"));}  
        } catch (Exception ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
    }
    
    
   public void agregarObjetivo(){
        try {       
            EvaluacionDesempenoObjetivoDto objetDto = new EvaluacionDesempenoObjetivoDto();
            objetDto.setDescripcion(this.descripcionObjetivo);
            objetDto.setEvaluacionDesempenoDto(this.dto);
            objetDto.setPuestoDto(this.dto.getPuestoDto());
            objetDto.setCalificacion(0L);
            objetDto.setValorActual(0L);
            
            this.objetivoManager.nuevo(objetDto);
            this.obtenerObjetivos();
            generarPromedioFuncionMof(this.objetivoDto.getEvaluacionDesempenoDto().getId());
            this.descripcionObjetivo = null;
            showMessage(UtilCore.Internacionalizacion.getMensajeInternacional("form.general.mensaje.transaccion.ok"));
        } catch (Exception ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
       
   }

    public void agregarCompetencia() {
        try {
            if (this.dtoArbolCompetencia.getCursoDto().getId() == 0L) {
                this.dtoArbolCompetencia.setCursoDto(null);
            }     
            this.dtoArbolCompetencia.setValorActual(this.dtoArbolCompetencia.getCalificacion());
            this.evaluacionDesempenoArbolManager.editar(this.dtoArbolCompetencia);
            generarPromedioArbolCompetecia(this.dtoArbolCompetencia.getEvaluacionDesempenoDto().getId());
            this.dto = this.manager.obtenerPorId(this.dto.getId());
            showMessage(UtilCore.Internacionalizacion.getMensajeInternacional("form.general.mensaje.transaccion.ok"));
        } catch (Exception ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
    }
    
    public void guardarEvaDesemp(){
        Boolean mof=true, arb=true, obj=true;
        for (EvaluacionDesempenoFuncionMofDto funMof : listaFuncionesMof) {
                    if(funMof.getValorActual()==0){
                        mof=false;
                    }
        }
        for(EvaluacionDesempenoArbolDto arbol: listaArbol){
                    if(arbol.getValorActual()==0){
                                arb=false;
                            }
        }
        for(EvaluacionDesempenoObjetivoDto objt: listaObjetivo){
                    if(objt.getValorActual()==0){
                                obj=false;
                            }
        }
        
        if(mof==true){
            if(arb==true){
                    if(obj==true){
                        evDesempenoPersona(this.dto.getPromedioTD());
                        procesarRedictVer();
                    }else{showError(UtilCore.Internacionalizacion.getMensajeInternacional("evaluacion.desarrollo.funciones.mof.mensaje.objetivo.validar"));}    
            }else{
                    showError(UtilCore.Internacionalizacion.getMensajeInternacional("evaluacion.desarrollo.funciones.mof.mensaje.arbol.validar"));
                    }
        }else{
                showError(UtilCore.Internacionalizacion.getMensajeInternacional("evaluacion.desarrollo.funciones.mof.mensaje.mof.validar"));
             } 
    }
    private void evDesempenoPersona(BigDecimal promedio){
            try {
                this.personaDto=this.dto.getPersonaDto();    
                if(promedio!=null){
                    this.personaDto.setEvDesempeno(promedio);
                    this.personaDto.setGt(ConstantesDesa.Parametro.EVALUACION_DESEMPENO_PERSONA_GT_INHABILITADO);
                    this.personaDto.setEvDesempenoDto(this.dto);
                    editarEstadoEvaDesemp();
                    
                    if(this.personaDto.getEvCompetencia()!=null){
                      this.personaDto.setPromedioFinal(UtilCore.Numero.round(BigDecimal.valueOf((this.personaDto.getEvCompetencia().doubleValue()+promedio.doubleValue())/2),2));
                      this.personaDto.setCuadrante(generarCuadrante(this.personaDto.getEvCompetencia(),promedio));
                      this.personaDto.setGt(ConstantesDesa.Parametro.EVALUACION_DESEMPENO_PERSONA_GT_HABILITADO);
                    }
                }else{
                    this.personaDto.setEvDesempeno(null);
                    this.personaDto.setEvDesempenoDto(null);
                    this.personaDto.setGt(null);
                    this.personaDto.setPromedioFinal(null);
                    this.personaDto.setCuadrante(null);
                 }
                this.personaManager.editar(this.personaDto);
            } catch (Exception ex) {
                logger.error("ERROR DE SISTEMA", ex);
                showError(ex.getMessage());
            }
    }
    
    private String generarCuadrante(BigDecimal evC, BigDecimal evD){
        double evalComp=evC.doubleValue(),evalDesemp=evD.doubleValue();
        String cuadrante="X";
        if(evalComp==3 && evalDesemp==3){cuadrante="II";}
        else if(evalComp>3 && evalDesemp>3){cuadrante="I";}
        else if(evalComp>3 && evalDesemp<=3){cuadrante="II";}
        else if(evalComp<=3 && evalDesemp>3){cuadrante="III";}
        else if(evalComp<=3 && evalDesemp<=3){cuadrante="IV";}

        return cuadrante;
    }
    
    public String anular(){
       try {
                this.dto.setEstadoDto(new ParametroDto(ConstantesDesa.Parametro.EVALUACION_DESEMPENO_ESTADO_ANULADO));
                this.manager.editar(dto);
                evDesempenoPersona(null);
                procesarRedictVer();  
            } catch (Exception ex) {
                logger.error("ERROR DE SISTEMA", ex);
                showError(ex.getMessage());
            }
            return "";
    }
    public String procesarRedictVer(){
       try {
                EvaluacionDesempenoDto dtoEvDesemAux=this.dto;
                if(this.dto != null){
                this.dto = this.manager.obtenerPorId(this.dto.getId());
                return this.ver();
                }else{this.dto=dtoEvDesemAux;}      
            } catch (Exception ex) {
                logger.error("ERROR DE SISTEMA", ex);
                showError(ex.getMessage());
            }
            return "";
    }
    
    private void editarEstadoEvaDesemp(){
            try {
                    this.dto.setEstadoDto(new ParametroDto(ConstantesDesa.Parametro.EVALUACION_DESEMPENO_ESTADO_HABILITADO));
                    this.manager.editar(dto);
            } catch (Exception ex) {
                logger.error("ERROR DE SISTEMA", ex);
                showError(ex.getMessage());
            }
    }
    

    
    public void generarPromedioArbolCompetecia(Long idCabecera) {  
        try {
            BigDecimal promArbol = this.evaluacionDesempenoArbolManager.obtenerPromedioArbol(idCabecera);
            this.dto.setPromedioArbol(UtilCore.Numero.round(promArbol, 2));
            this.manager.editar(this.dto);
            generarPromedioFuncionMof(idCabecera);
        } catch (Exception ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
    }
    
    public void generarPromedioFuncionMof(Long idCabecera) {
         System.out.print("idCabecera "+idCabecera);
        try {
            BigDecimal promMof = this.evaluacionDesempenoFuncionesMofManager.obtenerPromedioFuncionesMof(idCabecera);
            BigDecimal promObjet = this.objetivoManager.obtenerPromedioObjetivo(idCabecera);
            BigDecimal promTD = this.evaluacionDesempenoFuncionesMofManager.obtenerPromedioValorObjetivo(idCabecera);
            BigDecimal promArbol = this.evaluacionDesempenoArbolManager.obtenerPromedioArbol(idCabecera);
            
            System.out.print("promMof "+promMof);
            System.out.print("promObjet "+promObjet);
            System.out.print("promTD "+promTD);
            System.out.print("promArbol" +promArbol);
            
            if(promMof != null && promObjet != null && promTD != null && promArbol != null){
                BigDecimal promMofTD=generarPromedioFinal(promMof,promTD);
                BigDecimal promMofTDObje=generarPromedioFinal(promMofTD,promObjet);
                this.dto.setPromedioMof(UtilCore.Numero.round(promMof, 2));
                this.dto.setPromedioTD(UtilCore.Numero.round(promTD, 2));
                this.dto.setPromedioMofTD(UtilCore.Numero.round(promMofTD, 2));
                this.dto.setPromedioObjetivo(UtilCore.Numero.round(promObjet, 2));
                this.dto.setPromedioFinal(UtilCore.Numero.round(generarPromedioFinal(promMofTDObje,promArbol), 2));
                this.manager.editar(this.dto); 
            }
        } catch (Exception ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
    }
    
    protected BigDecimal generarPromedioFinal(BigDecimal promMof,BigDecimal promTD) {
        BigDecimal promFinal = BigDecimal.valueOf((promMof.doubleValue() + promTD.doubleValue()) / 2);
        return promFinal;
    }
    
    public String ver() {
        sessionMBean.setAccion(ConstantesDesa.Formulario.VER);
        sessionMBean.setTitulo(recursosManager.construirTitulo(keyTitulo, sessionMBean.getAccion()));
        //ApplicationHelper.cargarPropietarios(ConstantesDesa.Entidad.REQUERIMIENTO, this.dto.getId());
        this.obtenerDetalles();
        return ConstantesDesa.UrlNavegacion.URL_EVALUACION_DESEMPENO;
    }
    
    public void buscar(ActionEvent ae) {
        
        try {
            this.lista = this.manager.obtenerEvaluacionDesempeno(this.dtoFiltro);
        } catch (DAOException ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
        
    }
    
    public String guardar() {
        Boolean validarFunMof = Boolean.FALSE;
        try {
            if(this.dto.getPersonaDto().getPuestoDto().getListaFuncion().size()>0){
                for(MofFuncionDto listFun: this.dto.getPersonaDto().getPuestoDto().getListaFuncion()){
                    if(listFun.getEvaluacion().equals(Boolean.TRUE)){
                        validarFunMof=Boolean.TRUE;
                    }
                }
            }   
            
            
            
            if(validarFunMof.equals(Boolean.TRUE)){
                //INHABILITAR EVA.DESEMPEÑO SI ESTA ACTIVO O HABILITADO
                Long IdInhabilitar=this.manager.obtenerIdAnterior(this.dto.getPersonaDto());
                if(IdInhabilitar!=0){
                this.dtoAux=this.manager.obtenerPorId(IdInhabilitar);
                this.dtoAux.setEstadoDto(new ParametroDto(ConstantesDesa.Parametro.EVALUACION_DESEMPENO_ESTADO_ANULADO));
                this.manager.editar(dtoAux);

                this.personaDto=this.dtoAux.getPersonaDto();
                this.personaDto.setEvDesempeno(null);
                this.personaDto.setEvDesempenoDto(null);
                this.personaDto.setPromedioFinal(null);
                this.personaDto.setCuadrante(null);
                this.personaDto.setGt(0L);
                this.personaManager.editar(this.personaDto);
                }


               EvaluacionDesempenoDto dtoEvDesemAux=this.dto;
               this.dto.setFecha(UtilCore.Fecha.obtenerFechaActualDate());
               this.manager.guardar(this.dto);
               if(this.dto != null){
               this.dto = this.manager.obtenerPorId(this.dto.getId());
               return this.editar();
               }else{this.dto=dtoEvDesemAux;}
               
            }else{showWarning(UtilCore.Internacionalizacion.getMensajeInternacional("form.general.mensaje.error.evaluacion.desempeno.gestion.talento"));}
        } catch (DAOException ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
        return "";
    }
    
    public String retroceder() {
        buscar(null);
        sessionMBean.setAccion(ConstantesDesa.Formulario.LISTA);
        sessionMBean().setTitulo(recursosManager.construirTitulo(keyTitulo, sessionMBean().getAccion()));
        return ConstantesDesa.UrlNavegacion.URL_LISTA_EVALUACION_DESEMPENO;
    }
    
    public void handleSelect(SelectEvent event) {
        try {
            this.dto.setPuestoDto(this.dto.getPersonaDto().getPuestoDto());
            this.dto.setUnidadOrganicaDto(this.dto.getPersonaDto().getPuestoDto().getUnidadOrganicaDto());
            
            PersonaDto personaGt = new PersonaDto();
            personaGt= this.personaManager.obtenerPorId(this.dto.getPersonaDto().getId());
            Long gt=validarNull(personaGt.getGt());
           if(gt!=2){
              List<EvaluacionDesempenoDto> listaEvaComp =this.manager.numerodeEvaluacionesDesempeno(this.dto.getPersonaDto());
              int total=listaEvaComp.size();
                if(total!=0){
                    showWarning(UtilCore.Internacionalizacion.getMensajeInternacional("form.general.mensaje.transaccion.evaluacion.competencia"));
                  }
           }else{
                  showWarning(UtilCore.Internacionalizacion.getMensajeInternacional("form.general.mensaje.transaccion.evaluacion.desempeno.gestion.talento"));
                  this.desabilitarBotonProcesar=true;
                }
           
        } catch (DAOException ex) {
            logger.error("ERROR DE SISTEMA", ex);
            showError(ex.getMessage());
        }
    }
    private Long validarNull(Long var){
        if(var==null){var = 0L;}
        return var;
    }
    public static Logger getLogger() {
        return logger;
    }
    
    public static void setLogger(Logger logger) {
        EvaluacionDesempenoMBean.logger = logger;
    }
    
    public EvaluacionDesempenoManager getManager() {
        return manager;
    }
    
    public void setManager(EvaluacionDesempenoManager manager) {
        this.manager = manager;
    }
    
    public RecursosManager getRecursosManager() {
        return recursosManager;
    }
    
    public void setRecursosManager(RecursosManager recursosManager) {
        this.recursosManager = recursosManager;
    }
    
    public List<EvaluacionDesempenoDto> getLista() {
        return lista;
    }
    
    public void setLista(List<EvaluacionDesempenoDto> lista) {
        this.lista = lista;
    }
    
    public EvaluacionDesempenoDto getDto() {
        return dto;
    }
    
    public void setDto(EvaluacionDesempenoDto dto) {
        this.dto = dto;
    }
    
    public EvaluacionDesempenoDto getDtoFiltro() {
        return dtoFiltro;
    }
    
    public void setDtoFiltro(EvaluacionDesempenoDto dtoFiltro) {
        this.dtoFiltro = dtoFiltro;
    }
    
    public String getKeyTitulo() {
        return keyTitulo;
    }
    
    public void setKeyTitulo(String keyTitulo) {
        this.keyTitulo = keyTitulo;
    }
    
    public ApplicationMBean getApplicationMBean() {
        return applicationMBean;
    }
    
    public void setApplicationMBean(ApplicationMBean applicationMBean) {
        this.applicationMBean = applicationMBean;
    }
    
    public SessionMBean getSessionMBean() {
        return sessionMBean;
    }
    
    public void setSessionMBean(SessionMBean sessionMBean) {
        this.sessionMBean = sessionMBean;
    }
    
    public List<PuestoDto> getListaPuestoFiltro() {
        return this.recursosManager.obtenerPuestosActivosCombo();
    }
    
    public void setListaPuestoFiltro(List<PuestoDto> listaPuestoFiltro) {
        this.listaPuestoFiltro = listaPuestoFiltro;
    }
    
    public PersonaDto getPersonaDto() {
        return personaDto;
    }
    
    public void setPersonaDto(PersonaDto personaDto) {
        this.personaDto = personaDto;
    }
    
    public List<PuestoDto> getListaPuesto() {
        return this.recursosManager.obtenerPuestosActivosCombo();
    }
    
    public void setListaPuesto(List<PuestoDto> listaPuesto) {
        this.listaPuesto = listaPuesto;
    }
    
    public List<EvaluacionDesempenoFuncionMofDto> getListaFuncionesMof() {
        return listaFuncionesMof;
    }
    
    public void setListaFuncionesMof(List<EvaluacionDesempenoFuncionMofDto> listaFuncionesMof) {
        this.listaFuncionesMof = listaFuncionesMof;
    }
    
    public List<CursoDto> getListaCursos() {
        return this.recursosManager.obtenerCursosActivosCombo();
    }
    
    public void setListaCursos(List<CursoDto> listaCursos) {
        this.listaCursos = listaCursos;
    }
    
    public List<EvaluacionDesempenoArbolDto> getListaArbol() {
        return listaArbol;
    }
    
    public void setListaArbol(List<EvaluacionDesempenoArbolDto> listaArbol) {
        this.listaArbol = listaArbol;
    }
    
    public SelectItem[] getSiTipoEvaluacionFuncionesMof() {
        return this.recursosManager.siTipoEvaluacionFuncionesMof();
    }
    
    public void setSiTipoEvaluacionFuncionesMof(SelectItem[] siTipoEvaluacionFuncionesMof) {
        this.siTipoEvaluacionFuncionesMof = siTipoEvaluacionFuncionesMof;
    }
    
    public SelectItem[] getSiTipoEvaluacionCompetencias() {
        return this.recursosManager.siTipoEvaluacionCompetencias();
    }
    
    public void setSiTipoEvaluacionCompetencias(SelectItem[] siTipoEvaluacionCompetencias) {
        this.siTipoEvaluacionCompetencias = siTipoEvaluacionCompetencias;
    }
    
    public EvaluacionDesempenoFuncionMofDto getDtoFuncionesMof() {
        return dtoFuncionesMof;
    }
    
    public void setDtoFuncionesMof(EvaluacionDesempenoFuncionMofDto dtoFuncionesMof) {
        this.dtoFuncionesMof = dtoFuncionesMof;
    }

    public EvaluacionDesempenoArbolDto getDtoArbolCompetencia() {
        return dtoArbolCompetencia;
    }
    
    public void setDtoArbolCompetencia(EvaluacionDesempenoArbolDto dtoArbolCompetencia) {
        this.dtoArbolCompetencia = dtoArbolCompetencia;
    }
    
    public CursoDto getCursoDto() {
        return cursoDto;
    }
    
    public void setCursoDto(CursoDto cursoDto) {
        this.cursoDto = cursoDto;
    }

    public List<ParametroDto> getListaEstados() {
        List<ParametroDto> list = new ArrayList<ParametroDto>();
                for(ParametroDto param : this.recursosManager.obtenerParametrosActivosPorCatalogo(ConstantesDesa.CatalogoParametro.EVALUACION_DESEMPENO_ESTADOS)){
                    if(!param.getId().equals(ConstantesDesa.Parametro.EVALUACION_DESEMPENO_ESTADO_GEST_TALENTO)){
                        list.add(param);
                    }
                }
                return list;
    }
    

    public void setListaEstados(List<ParametroDto> listaEstados) {
        this.listaEstados = listaEstados;
    }

    public EvaluacionDesempenoDto getDtoEvalDesempenoEstado() {
        return dtoEvalDesempenoEstado;
    }

    public void setDtoEvalDesempenoEstado(EvaluacionDesempenoDto dtoEvalDesempenoEstado) {
        this.dtoEvalDesempenoEstado = dtoEvalDesempenoEstado;
    }

    public PersonaManager getPersonaManager() {
        return personaManager;
    }

    public void setPersonaManager(PersonaManager personaManager) {
        this.personaManager = personaManager;
    }
    
    public EvaluacionDesempenoDto getDtoAux() {
        return dtoAux;
    }

    public void setDtoAux(EvaluacionDesempenoDto dtoAux) {
        this.dtoAux = dtoAux;
    }

    public Long getEstadoGt() {
        return estadoGt=ConstantesDesa.Parametro.EVALUACION_DESEMPENO_ESTADO_GEST_TALENTO;
    }

    public void setEstadoGt(Long estadoGt) {
        this.estadoGt = estadoGt;
    }

    public Long getEstadoAnulado() {
        return estadoAnulado=ConstantesDesa.Parametro.EVALUACION_DESEMPENO_ESTADO_ANULADO;
    }

    public void setEstadoAnulado(Long estadoAnulado) {
        this.estadoAnulado = estadoAnulado;
    }

 

    public Long getEstadoHabilitado() {
        return estadoHabilitado=ConstantesDesa.Parametro.EVALUACION_DESEMPENO_ESTADO_HABILITADO;
    }

    public void setEstadoHabilitado(Long estadoHabilitado) {
        this.estadoHabilitado = estadoHabilitado;
    }

    public Long getEstadoActivo() {
        return estadoActivo=ConstantesDesa.Parametro.EVALUACION_DESEMPENO_ESTADO_ACTIVO;
    }

    public void setEstadoActivo(Long estadoActivo) {
        this.estadoActivo = estadoActivo;
    }

    public Boolean getDesabilitarBotonProcesar() {
        return desabilitarBotonProcesar;
    }

    public void setDesabilitarBotonProcesar(Boolean desabilitarBotonProcesar) {
        this.desabilitarBotonProcesar = desabilitarBotonProcesar;
    }

    public List<EvaluacionDesempenoObjetivoDto> getListaObjetivo() {
        return listaObjetivo;
    }

    public void setListaObjetivo(List<EvaluacionDesempenoObjetivoDto> listaObjetivo) {
        this.listaObjetivo = listaObjetivo;
    }

    public EvaluacionDesempenoObjetivoDto getObjetivoDto() {
        return objetivoDto;
    }

    public void setObjetivoDto(EvaluacionDesempenoObjetivoDto objetivoDto) {
        this.objetivoDto = objetivoDto;
    }

    public String getDescripcionObjetivo() {
        return descripcionObjetivo;
    }

    public void setDescripcionObjetivo(String descripcionObjetivo) {
        this.descripcionObjetivo = descripcionObjetivo;
    }

    public SelectItem[] getSiTipoEvaluacionObjetivo() {
        return this.recursosManager.siTipoEvaluacionObjetivo();
    }

    public void setSiTipoEvaluacionObjetivo(SelectItem[] siTipoEvaluacionObjetivo) {
        this.siTipoEvaluacionObjetivo = siTipoEvaluacionObjetivo;
    }

    public String getEvidenciaObjetivo() {
        return evidenciaObjetivo;
    }

    public void setEvidenciaObjetivo(String evidenciaObjetivo) {
        this.evidenciaObjetivo = evidenciaObjetivo;
    }

    public List<ParametroDto> getListaUnidadOrgFiltro() {
       List<ParametroDto> list = new ArrayList<ParametroDto>();
       for(ParametroDto param : this.recursosManager.obtenerParametrosActivosPorCatalogoAdd(ConstantesSgc.CatalogoParametro.UNIDAD_ORGANICA, ConstantesCore.Parametro.TODOS)){
               list.add(param);
       }
       return list;
    }

    public void setListaUnidadOrgFiltro(List<ParametroDto> listaUnidadOrgFiltro) {
        this.listaUnidadOrgFiltro = listaUnidadOrgFiltro;
    }

    public List<ParametroDto> getListaEstadosFiltro() {
       List<ParametroDto> list = new ArrayList<ParametroDto>();
       for(ParametroDto param : this.recursosManager.obtenerParametrosActivosPorCatalogoAdd(ConstantesDesa.CatalogoParametro.EVALUACION_DESEMPENO_ESTADOS, ConstantesCore.Parametro.TODOS)){
               list.add(param);
       }
       return list;
    }

    public void setListaEstadosFiltro(List<ParametroDto> listaEstadosFiltro) {
        this.listaEstadosFiltro = listaEstadosFiltro;
    }
    
}
